package mapper

// 基础表 as 名称
func (m MapperQuery) BaseTableAsName(baseTableAsName string) *MapperQuery {
	m.joinBaseTableAsName = &baseTableAsName
	return &m
}

// 连接
// tableName 表名
// asName 别名
// onStr 连接条件，如：a.id = asName.id
func (m MapperQuery) Join(tableName, asName, onStr string) *MapperQuery {

	m.joinInfo = append(m.joinInfo, " JOIN "+tableName+" "+asName+" ON "+onStr)

	return &m
}

// 左连接
// tableName 表名
// asName 别名
// onStr 连接条件，如：a.id = asName.id
func (m MapperQuery) LeftJoin(tableName, asName, onStr string) *MapperQuery {

	m.joinInfo = append(m.joinInfo, "LEFT JOIN "+tableName+" "+asName+" ON "+onStr)

	return &m
}

// 右连接
// tableName 表名
// asName 别名
// onStr 连接条件，如：a.id = asName.id
func (m MapperQuery) RightJoin(tableName, asName, onStr string) *MapperQuery {

	m.joinInfo = append(m.joinInfo, "RIGHT JOIN "+tableName+" "+asName+" ON "+onStr)

	return &m
}

// 全连接
// tableName 表名
// asName 别名
// onStr 连接条件，如：a.id = asName.id
func (m MapperQuery) FullJoin(tableName, asName, onStr string) *MapperQuery {

	m.joinInfo = append(m.joinInfo, "FULL JOIN "+tableName+" "+asName+" ON "+onStr)

	return &m
}

// 全外连接
// tableName 表名
// asName 别名
// onStr 连接条件，如：a.id = asName.id
func (m MapperQuery) FullOuterJoin(tableName, asName, onStr string) *MapperQuery {

	m.joinInfo = append(m.joinInfo, "FULL OUTER JOIN "+tableName+" "+asName+" ON "+onStr)

	return &m
}

// 内连接
// tableName 表名
// asName 别名
// onStr 连接条件，如：a.id = asName.id
func (m MapperQuery) InnerJoin(tableName, asName, onStr string) *MapperQuery {

	m.joinInfo = append(m.joinInfo, "INNER JOIN "+tableName+" "+asName+" ON "+onStr)

	return &m
}
